import Serializer=require('./../../../base/Serializer');
import ObjPositionAlign=require('./../../../base/ObjPositionAlign');
import ObjRelativePosType=require('./../../../base/ObjRelativePosType');
import Point=require('./../../../../common/graph/Point');


export = TextHeadStyle;

/**
 * 文字的抬头
 * @author 
 *
 */
class TextHeadStyle extends Serializer {
    /*
     * 抬头的对齐方式
     */
    public static HEAD_ALIGN_TO_TEXT_OBJ=0;// 抬头对齐到文字对象上
    public static HEAD_ALIGN_TO_TEXT_PARA=1;// 抬头对齐到文字段落上
    
    /*
     * 文字抬头对齐到文字对象上，还是对齐到段落上
     * 目前只开发：对齐到文字对象上
     */
    public alignTo: number=TextHeadStyle.HEAD_ALIGN_TO_TEXT_OBJ ;
    
    /**
     * 抬头的位置类型：抬头在前，文字在后。
     * 注意：文字部分的含义是对齐到文字轮廓上，例如2-7 表示抬头的右侧垂直方向的中心对齐到文字的第一行字的垂直方向的中心
     */
    public headPos: ObjRelativePosType=new ObjRelativePosType(ObjPositionAlign.ALIGN_POINT_1,ObjPositionAlign.ALIGN_POINT_7);
    
    /**
     * 抬头的偏移，表示headPos的两个对齐点点距离
    */
    public headOffset: Point=new Point();
    /*
     * TODO: 暂时不用
     * 偏移倍数（抬头相对文字正文的偏移量 = 正文字号大小 * 偏移倍数）
     */
    public offsetRatioX: number=0;
    public offsetRatioY: number=0;
    
    /*
     * 抬头的对齐方式
     */
    public static HEAD_TYPE_0=0;// 固定的图片／图形
    public static HEAD_TYPE_1=1;// 序列
    /*
     * 抬头的对齐方式
     */
    public headType: number=TextHeadStyle.HEAD_TYPE_0;
    
    

    public constructor(g?) {
        super(g);
    }
    // 从json对象(注意不是json字符串)中解析
    // 参数：self,true表示只拷贝自身数据，而不拷贝子的数据
    public fromJson(jsonObj,versionId,self?) {
        super.fromJson(jsonObj,versionId,self);

        if(jsonObj.hasOwnProperty("alignTo")) {
            this.alignTo=jsonObj.alignTo;
        }
        if(jsonObj.hasOwnProperty("headPos")) {
            this.headPos.fromJson(jsonObj.headPos,versionId);
        }
        if(jsonObj.hasOwnProperty("headOffset")) {
            this.headOffset.fromArray(jsonObj.headOffset);
        }
        if(jsonObj.hasOwnProperty("offsetRatioX")) {
            this.offsetRatioX=jsonObj.offsetRatioX;
        }
        if(jsonObj.hasOwnProperty("offsetRatioY")) {
            this.offsetRatioY=jsonObj.offsetRatioY;
        }
        if(jsonObj.hasOwnProperty("headType")) {
            this.headType=jsonObj.headType;
        }
    }
    
    // 转成json字符串
    public toJson(): string {
        // 去掉父json字符串的头尾
        var superJson=super.toJson();
        superJson=superJson.substr(1,superJson.length-2);

        var ret='{';
        ret+=superJson;
        
        // alignTo
        ret+=',';
        ret+='"alignTo":';
        ret+=this.alignTo; 
        
        // headPos
        if(this.headPos) {
            ret+=',';
            ret+='"headPos":';
            ret+=this.headPos.toJson();
        }
        
        // headOffset
        if(this.headOffset) {
            ret+=',';
            ret+='"headOffset":';
            ret+=this.headOffset.toArray();
        }
        // offsetRatio
        ret+=',';
        ret+='"offsetRatioX":';
        ret+=this.offsetRatioX;
        ret+=',';
        ret+='"offsetRatioY":';
        ret+=this.offsetRatioY;
        
        // headType
        ret+=',';
        ret+='"headType":';
        ret+=this.headType; 
        
        ret+='}';
        return ret;
    }
}//SJG_MARK_END-------------------------

